module MultiWidgetContainerView where

import Graphics.UI.Gtk

data ViewState = V 
    { mainWidget :: Widget
    , notebook :: Notebook
    , nameE :: Entry
    , addB :: Button
    }

new :: IO ViewState
new = do
  vbox <- vBoxNew False 4
  nb <- notebookNew 
  set nb [ notebookScrollable := True
         , notebookEnablePopup := True
         , notebookTabPos := PosRight 
         ]
  hbox <- hBoxNew False 4  
  nameE <- entryNew
  addB <- buttonNewFromStock stockAdd

  boxPackEnd hbox addB PackNatural 2
  boxPackEnd hbox nameE PackNatural 2
  boxPackStart vbox nb PackGrow 2
  sep <- hSeparatorNew
  boxPackStart vbox sep PackNatural 2
  boxPackStart vbox hbox PackNatural 2
  return (V (toWidget vbox) nb nameE addB)

add :: ViewState -> String -> Widget -> IO ()
add vs name w = do
  putStrLn $ "appending notebook page " ++ name
  notebookAppendPage (notebook vs) w name
  widgetShowAll (notebook vs) 
  return ()